package com.yunfei.api.shuanglu.result;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 *
 * @ClassName: JsonUtil
 * @Description: 处理json的工具类
 * @date 2017-3-27 下午4:41:30
 */
public final class JsonUtil {

    /**
     *
     * @Title: jsonToBean
     * @Description: json转javabean
     * @param json
     * @param clazz
     * @return
     */
    @SuppressWarnings("unchecked")
    public static final <T> T jsonToBean(JSONObject json, Class<T> clazz) {
        return (T) JSONObject.toBean(json, clazz);
    }

    /**
     *
     * @Title: jsonToMap
     * @Description: json转Map
     * @param json
     * @return
     */
    @SuppressWarnings("unchecked")
    public static final Map<String, Object> jsonToMap(JSONObject json) {
        return json;
    }

    /**
     *
     * @Title: jsonToList
     * @Description: json转list
     * @param jsonArray
     * @param t
     * @return
     */
    @SuppressWarnings({ "deprecation", "unchecked" })
    public static final <T> List<T> jsonToList(JSONArray jsonArray, Class<T> clazz) {
        return JSONArray.toList(jsonArray, clazz);
    }

    /**
     *
     * @Title: jsonToArray
     * @Description: json转array
     * @param jsonArray
     * @param clazz
     * @return
     */
    @SuppressWarnings("unchecked")
    public static final <T> T[] jsonToArray(JSONArray jsonArray, Class<T> clazz) {
        return (T[]) JSONArray.toArray(jsonArray, clazz);
    }

    /**
     *
     * @Title: jsonToString
     * @Description: json转String
     * @param json
     * @return
     */
    public static final String jsonToString(JSONObject json) {
        return json.toString();
    }

    /**
     *
     * @Title: beanToJson
     * @Description: bean转json
     * @param bean
     * @return
     */
    public static final JSONObject beanToJson(Object bean) {
        return JSONObject.fromObject(bean);
    }

    /**
     *
     * @Title: mapToJson
     * @Description: map转json
     * @param map
     * @return
     */
    public static final JSONObject mapToJson(Map<String, Object> map) {
        return JSONObject.fromObject(map);
    }

    /**
     *
     * @Title: listToJson
     * @Description: list转json
     * @param list
     * @return
     */
    public static final <T> JSONArray listToJson(List<T> list) {
        return JSONArray.fromObject(list);
    }

    /**
     *
     * @Title: arrayToJson
     * @Description: array转json
     * @param array
     * @return
     */
    public static final JSONArray arrayToJson(Object[] array) {
        return JSONArray.fromObject(array);
    }

    /**
     *
     * @Title: stringToJson
     * @Description: String转json
     * @param str
     * @return
     */
    public static final JSONObject stringToJson(String str) {
        return JSONObject.fromObject(str);
    }

}
